# -!- coding: utf-8 -!-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
渠道资金系统最新通道业务主流程图
#文件：flow_qdzj_company.py
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

ip_status = 'Y'              # IP报备状态
channel_status = 'Y'         # 渠道开关
# product_status = 'Y'         # 旧产品
service_status = 'Y'         # 对应接口是否支持访问
secret_status = 'Y'          # 验签状态（进件）

channelType = 1              # 0-企业，1-个人
contract_status = 0          # 0-未签署，1-已签署
notice = 1                   # 1-签署债权转让通知书，0-不签署

repayPattern = 'MCAT30'


def flow_common():
    if ip_status == 'Y' and channel_status == 'Y' and service_status == 'Y' and secret_status == 'Y':
        print('进件前必要的一些校验通过，开始对接口字段进行校验：')
        print('接口字段长度、数据类型、是否必填校验通过后，请求流水号不能重复，进行相应的业务逻辑处理：')
    else:
        print('进件前必要的一些校验不通过，流程结束！')

def flow_apply():
    print('通道方开始调用申请进件接口channel/apply...')
    flow_common()
    if channelType == 0:
        print('通道方开始发起的是企业类型进件申请，企业信息字段必填，通道方：YGJ-银管家...')
        print('如果企业的社会信用代码-organCode在数据库表process_contract_emp中未创建签章，需要在E签宝创建签章，然后存入到数据库...')
    else :
        print('通道方开始发起的是个人类型进件申请，个人信息字段必填，通道方：IJFQ-i家分期...')
        print('如果个人的身份证号-idCardNum在数据库表 process_contract_person 中未创建签章，需要在E签宝创建签章，然后存入到数据库...')
    print('先在process_seq生成一个内部案件号，然后将进件信息存储到数据库表：process_emp_info，一个进件一条记录...')


def flow_contract():
    print('通道方开始调用借款协议签约接口channel/contract...')
    flow_common()
    print('先查询 process_emp_info-进件信息表，判断是否存在对应的小贷案件流水号，存在继续下面流程...')
    print('从 process_chnmodel_config 获取类型model_type为1-借款协议的PDF模版，存在继续下面流程...')
    if channelType == 0:
        print('通道方开始发起的是企业类型借款协议签约，企业信息字段必填，通道方：YGJ-银管家...')
        print('从 process_contract_emp 获取通道方企业客户对应E签宝签章信息，存在继续下面流程...')
    else :
        print('通道方开始发起的是个人类型借款协议签约，个人信息字段必填，通道方：IJFQ-i家分期...')
        print('从 process_contract_person 获取通道方个人客户对应E签宝签章信息，存在继续下面流程...')
    print('从 process_borrow_contract 查看接口对应的请求流水号caseId和小贷案件号processNo是否有记录，不存在则插入一条记录后继续下面流程...')
    if contract_status == 0:
        print('process_borrow_contract 不存对应案件号的合同，则插入一条记录后继续下面流程...')
    else:
        print('process_borrow_contract 存对应案件号的合同，返回"msg":"已签约借款协议","code":1 ')
        exit()
    print('从 process_contract_emp 获取小贷对应E签宝签章信息，存在继续下面流程...')
    print('从 process_chn_contact_config 获取类型model_type为0-借款协议对应合同配置信息，存在继续下面流程...')
    print('开始进行合同签署流程，成功后将合同上传到阿里云服务器 /test/meson/通道方/pdf/contract/2019-12-24/小贷案件号/loan/ ，'
          '并更新 process_borrow_contract-合同签署记录表状态和url')

def flow_transfer():
    print('通道方开始调用债权转让协议签约接口channel/transfer...')
    flow_common()
    print('判断接口中债权转让协议转让个数，不超过10个时继续下面流程...')
    print('从 process_borrow_contract 查看接口对应的请求的小贷案件号 processNo 是否已签署合同，存在则继续下面流程...')
    print('从 process_emp_info 查看接口对应的请求小贷案件号 processNo 是否有进件记录，存在则继续下面流程...')
    print('从 process_credtrans_record 查看接口对应的请求流水号 caseId 是否有债权转让协议记录，不存在则继续下面流程...')
    print('从 process_chnmodel_config 获取类型model_type为2-债权转让清单的PDF模版，存在继续下面流程...')
    print('从 process_chnfactor_config 获取通道保理公司配置信息（已经在E签宝创建签章），存在继续下面流程...')
    print('从 process_contract_emp 获取小贷对应E签宝签章信息，存在继续下面流程...')
    print('从 process_chn_contact_config 获取类型model_type为1-债权转让清单对应配置信息，存在继续下面流程...')
    print('开始进行债权转让协议签署流程，成功后将合同上传到阿里云服务器 /test/meson/通道方/pdf/transfer/2019-12-24/随机数/loan/ ，'
          '并插入信息到 process_credtrans_record-债权转让协议签署记录表')
    print('债权转让协议是一个申请对应一份，里面清单包含所有的合同')
    if notice == 1:
        print('需要签署债转通知书协议，继续下面流程...')
    else:
        print('不需要签署债转通知书协议 ')
        exit()
    print('从 process_credtrans_notice 查看接口对应请求的小贷案件号 processNo 是否有债权转让通知书记录，不存在则继续下面流程...')
    print('从 process_chnmodel_config 获取类型model_type为3-债权转让通知书的PDF模版，存在继续下面流程...')
    print('从 process_contract_emp 获取小贷对应E签宝签章信息，存在继续下面流程...')
    print('从 process_chn_contact_config 获取类型model_type为2-债权转让通知对应配置信息，存在继续下面流程...')
    print('开始进行债转通知书协议签署流程，成功后将合同上传到阿里云服务器 /test/meson/通道方/pdf/notice/2019-12-24/随机数/loan/ ，'
          '并插入信息到 process_credtrans_notice-债权转让协议签署记录表')
    print('债转通知书是对应一个客户一份，相当于一个合同一份通知书')


def main():
    flow_apply()
    flow_contract()
    flow_transfer()

if __name__ == '__main__':
    main()